const Promise = require('./src/4.promise.js');
// 嵌套promise
// let promise2 = new Promise((resolve) => {
//     resolve(1);
// }).then((data) => {
//     return new Promise((resolve, reject) => {
//         setTimeout(() => {
//             resolve(new Promise((resolve, reject) => { // resolve的还是一个promise
//                 setTimeout(() => {
//                     resolve('ok');
//                 }, 1000)
//             }));
//         }, 1000)
//     })
// })
// promise2.then((data) => {
//     console.log('成功', data); // 成功 ok
// }, err => {
//     console.log('err', err);
// })

// 值得穿透
// new Promise((resolve) => {
//     resolve('ok');
// }).then().then().then((data) => {
//     console.log('成功', data); // 成功 ok
// }, err => {
//     console.log('err', err);
// })

// new Promise((resolve, reject) => {
//     reject('err');
// }).then().then().then((data) => {
//     console.log('成功', data);
// }, err => {
//     console.log('err', err); // err err
// })



// 延迟对象，帮我们减少一次套用
Promise.deferred = function() {
    let dfd = {};
    dfd.promise = new Promise((resolve, reject) => {
        dfd.resolve = resolve;
        dfd.reject = reject;
    });
    return dfd;
}

function readFile(filePath, encoding) {
    return new Promise((resolve, reject) => {
        fs.readFile(filePath, encoding, (err, data) => {
            if (err) return inject(err);
            resolve(data);
        })
    })
}
function readFile(filePath, encoding) {
    let dfd = Promise.deferred;
    fs.readFile(filePath, encoding, (err, data) => {
        if (err) return dfd.inject(err);
        dfd.resolve(data);
    })
    return dfd.promise;
}

// promise直接resove一个promise
new Promise((resolve, reject) => {
    resolve(new Promise((resolve, reject) => {
        resolve(100)
    }))
}).then(data => {
    console.log('成功', data);  // 成功 100
})

